package com.suning.sawp.intf.model;

import java.util.List;

import com.suning.sawp.dto.mainpush.StoreManDto;
import com.suning.sawp.dto.storeman.Category;
import com.suning.sawp.intf.model.dto.ModelAnalyseDto;
import com.suning.sawp.intf.model.dto.SaleAnalyseDto;
import com.suning.sawp.intf.model.vo.ContributionCompareResponse;
import com.suning.sawp.intf.model.vo.ContributionResponse;
import com.suning.sawp.intf.model.vo.ModelRecommendResponse;
import com.suning.sawp.intf.model.vo.ModelTopResponse;
import com.suning.sawp.intf.model.vo.ModelValidResponse;
import com.suning.sawp.intf.model.vo.SummaryContributionVo;

/**
 * 样机分析接口
 *
 * @author 15050519
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface ModelAnalyseService {

    /**
     * 保存门店样机销售记录
     *
     * @param dto
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void saveModelAnalyse(ModelAnalyseDto dto);

    /**
     * 保存门店销售记录
     *
     * @param dto
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void saveSaleAnalyse(SaleAnalyseDto dto);

    /**
     * 汇总查询店长，督导门店销售贡献率
     * 
     * @param storeCode
     * @param cates
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<SummaryContributionVo> querySummaryContribution(String storeCode, List<Category> cates);

    /**
     * 
     * 查询店长，督导门店销售的品类，品牌贡献率
     *
     * @param storeCode
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ContributionResponse queryContributionOfMonth(String storeCode, String cateCode);

    /**
     * 查询店长，督导门店销售的品类，品牌有效性分析
     *
     * @param storeCode
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelValidResponse queryModelValid(String storeCode, String cateCode);

    /**
     * 查询同级别门店间贡献率比较
     *
     * @param disCode
     * @param storeType
     * @param storeMan
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ContributionCompareResponse queryContributionCompare(String disCode, String storeType, String cateCode, StoreManDto storeMan);

    /**
     * 查询店长，督导门店销售的商品前,后二十
     *
     * @param storeCode
     * @param cateCode
     * @param flag
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelTopResponse queryModelTopTwenty(String storeCode, String cateCode, String flag);

    /**
     * 查询店长，督导门店样机推荐
     *
     * @param storeCode
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ModelRecommendResponse queryModelRecommend(String storeCode, String cateCode);

}
